
const axi = {

    TOKEN_TAG: 'Wang-Zhou-Token',

    axi(model) {
        // 创建一个 axios 实例
        const instance = axios.create({
            baseURL: model.pre
        });

        // 动态设置请求头
        instance.defaults.headers.common['Authorization'] = 'Bearer' + " " + this.TOKEN_TAG + ':' + model.tokenJson.tokenJwt ;

        // 返回
        return instance;
    },

    get(model, url, params, callback) {
        this.axi(model).get(url, {params: params})
            .then((response) => {
                if (response.data.code === 200) {
                    if (callback){
                        try{
                            callback(response.data.data)
                        } catch (e) {
                            model.$message.error(e.message)
                        }
                    }
                } else {
                    model.$message.error(response.data.message)
                }
            })
            .catch((error) => {
                model.$message.error('请求失败: ' + error.message)
            })
    },

    post(model, url, data, callback) {
        this.axi(model).post(url, data )
            .then((response) => {
                model.dialogLoading = false
                if (response.data.code === 200) {
                    if (callback){
                        try{
                            //
                            callback(response.data.data)
                        } catch (e) {
                            console.log(e)
                            model.$message.error(e.message)
                            model.dialogLoading = false
                        }
                    }
                } else {
                    model.$message.error(response.data.message)
                    model.dialogLoading = false
                }
            })
            .catch((error) => {
                const flag = (error && error.message && error.message.includes('Request failed with status code 429') )
                const lastMsg = flag ? '数据库字段值重复，违反了唯一性' : error.message
                model.$message.error(lastMsg)
                //
                model.showBtnDialogFormSubmit = true
                model.dialogLoading = false
            })
    },


    put(model, url, data, callback) {
        this.axi(model).put(url, data )
            .then((response) => {
                if (response.data.code === 200) {
                    if (callback){
                        try{
                            //
                            callback(response.data.data)
                        } catch (e) {
                            console.log(e)
                            model.$message.error(e.message)
                        }
                    }
                } else {
                    model.$message.error(response.data.message)
                }
            })
            .catch((error) => {
                model.$message.error('请求失败： ' + error.message)
                console.log(error)
                //
                model.showBtnDialogFormSubmit = true
            })
    },

    delete(model, url, ids, callback) {
        this.axi(model).delete(url + '?ids=' + ids)
            .then((response) => {
                if (response.data.code === 200) {
                    if (callback){
                        try{
                            //
                            callback(response.data.data)
                        } catch (e) {
                            console.log(e)
                            model.$message.error(e.message)
                        }
                    }
                } else {
                    model.$message.error(response.data.message)
                }
            })
            .catch((error) => {
                model.$message.error('请求失败： ' + error.message)
                console.log(error)
                //
            })
    },

    numberFormat(num) {
        // 定义单位数组，用于存储不同数量级对应的单位
        const units = ['', 'K', 'M', 'B', 'T'];
        // 初始化单位索引为 0
        let unitIndex = 0;
        // 当数字大于等于 1000 且单位索引小于单位数组长度减 1 时，继续循环
        while (num >= 1000 && unitIndex < units.length - 1) {
            // 数字除以 1000
            num /= 1000;
            // 单位索引加 1
            unitIndex++;
        }
        // 将处理后的数字保留三位小数，并与对应的单位拼接
        return num.toFixed(3).replace(/\.?0+$/, '') + units[unitIndex];
    }





} ;